#ifndef CATALOGO_H_
#define CATALOGO_H_

#include "Pieza.h"
#include <list>
#define CANTIDAD_PIEZAS 11

//Representa el catalogo de piezas predefinidas, cada pieza asignada a una letra unica



class Contenedor{
	private:
		char letraAsignada;
		Pieza* pieza;
	public:
		/*POST:devuelve la letra que se asocia a la correspondiente pieza.*/
		char getLetraAsignada();
		/*PRE:la letra que se va a asignar a este contenedor es valida.
		 *POST:Como la letra es válida se la asocia a alguna pieza*/
		void setLetraAsignada(char letraAsignada);
		/*POST:devuelve la pieza del contenedor */
		Pieza* getPieza();
		/*PRE:la pieza es válida.
		 *POST:asocia una pieza al contenedor*/
		void setPieza(Pieza* pieza);
};


class Catalogo {
private:
	list<Contenedor*> coleccionPiezas;
	Color ROJO,VERDE,AZUL,ROSA,VERDE_OSCURO,NARANJA,CELESTE,KHAKI,INDIGO,AMARILLO,GRIS,NEGRO;
	void inicializarColores();
	void crearPiezaA(Color c);
	void crearPiezaB(Color c);
	void crearPiezaC(Color c);
	void crearPiezaD(Color c);
	void crearPiezaE(Color c);
	void crearPiezaF(Color c);
	void crearPiezaG(Color c);
	void crearPiezaH(Color c);
	void crearPiezaI(Color c);
	void crearPiezaJ(Color c);
	void crearPiezaK(Color c);
public:
	//POST: El catalogo esta listo para usarse luego de su creacion, teniendo piezas predefinidas ya cargadas en el mismo.
	Catalogo();
	~Catalogo();
	//PRE: Ninguna
	//POST: Se devuelve un puntero a la copia de la pieza correspondiente a la letra ingresada. Devuelve NULL si no hay pieza que se corresponda.
	Pieza* getPieza(char letra);
};

#endif /* CATALOGO_H_ */
